public class NO6 {
    public static void main(String[] args) {
        int[] nums = new int[]{1,2,3,4};
        int k = 2;

        rotate(nums, k);

        for (int num : nums) {
            System.out.println(num);
        }
    }

    public static void rotate(int[] nums, int k) {
        // 判断nums元素个数是奇数还是偶数
        // 如果是奇数,nums[k] 跟随前半部分
        // 如果是偶数,nums[k] 跟随后半部分
        if (nums.length == 1 || k == 0) {
            return;
        }
        k %= nums.length;

        // 创建长度为k的数组保存原始数组[0 ~ k]位的元素
        int[] before = new int[nums.length-k-1];
        for (int i = 0,j = 0; i < before.length; i++) {
            before[j++] = nums[i];
        }

        // 将后半部分的元素平移到开头
        int j = 0;
        for (int i = before.length + 1; i < nums.length; i++) {
            nums[j++] = nums[i];
        }

        // 将前半部分补充到后面
        for (int i = 0; i < before.length; i++) {
            nums[j++] = before[i];
        }
    }
}
